查看原文
其他

能让你在使用MyBatis时提高100倍效率的开源框架引擎

TJ TJ君 2022-07-01

大家好,我是TJ

关注TJ君,回复“武功秘籍”免费获取计算机宝典书籍

TJ君将之前发过的各种项目及工具进行了整理,收录到了GitHub项目,欢迎各位小伙伴光临Star,地址如下:https://github.com/Wechat-TJ/TJ-WORLD-FORU

今天TJ君要给大家介绍一个框架引擎,可能会让你在使用MyBatis时的效率提高个、十、百,对,提高100倍这么多!

Bean Searcher

Bean Searcher是一个专注高级查询的只读ORM,天生支持联表,免 DTO/VO 转换,只要使用得当,一行代码实现复杂列表检索将会成为可能,不再是梦想~

截止目前为止,Bean Searcher主要支持的特点有:

  • 支持 实体多表映射
  • 支持 动态字段运算符
  • 支持 分组聚合 查询
  • 支持 Select | Where | From 子查询
  • 支持 实体类嵌入参数
  • 支持 字段转换器
  • 支持 Sql 拦截器
  • 支持 数据库 Dialect 扩展
  • 支持 多数据源 与 动态数据源
  • 支持 注解缺省 与 自定义
  • 支持 字段运算符 扩展

其架构图详解如下:

更简单直接的说,Bean Searcher就是一个轻量级的数据库条件检索引擎,其作用是从已有的数据库表中检索数据,最终目的是为了减少后端模板代码的开发,极大提高开发效率,节省开发时间。

当然,TJ君的理解是,Bean Searcher并不是单纯的为了替换MyBatis,而是在最合适它的场景下让用户的使用更便捷更高效。

例如一些非事务性的动态检索场景,就是非常适合Bean Searcher的发挥,就好比管理后台的用户管理等检索场景,实际运作中是不会向数据库中插入数据的,并且其检索条件是动态的,用户检索方式不同,执行的SQL也不同,就比较适合Bean Searcher了。

如果小伙伴再深入使用一段时间,除了之前说的那些特点,你会发现Bean Searcher可能还有这些优点:

  • 极速开发

轻松实现高级查询,且无需 DTO/VO 转换, 极大提高后端研发效率

  • 集成简单

可以和任意 Java Web 框架集成,如:SpringBoot、Grails、Jfinal 等

  • 扩展性强

面向接口设计,用户可自定义扩展 Bean Searcher 中的任何组件

  • 支持 注解缺省

约定优于配置,可省略注解,可复用原有域类,同时支持自定义注解

  • 支持 Select 指定字段 同一个实体类,可指定只 Select 其中的某些字段,或排除某些字段

  • 支持 参数过滤器

支持添加多个参数过滤器,可自定义参数过滤规则

  • 支持 字段转换器

支持添加多个字段转换器,可自定义数据库字段到实体类字段的转换规则

  • 支持 SQL 拦截器

支持添加多个 SQL 拦截器,可自定义 SQL 生成规则

最后,我们可以看下Bean Searcher 最简单的一行代码示例:

@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private BeanSearcher searcher;               // 注入 Bean Searcher 的检索器

    @GetMapping("/index")
    public SearchResult<User> index(HttpServletRequest request) {
        // 只一行代码,实现包含 分页、组合过滤、任意字段排序、甚至统计、多表联查的 复杂检索功能
        return searcher.search(User.class, MapUtils.flat(request.getParameterMap()));
    }

}

觉得不错的小伙伴,不妨来试试看哦!

点击下方卡片,关注公众号“TJ君

回复“BS2022”,获取仓库地址

关注我,每天了解一个牛x、好用、有趣的东东


往期推荐

针对Android平台的开源图片选择器

tmagic-editor 页面可视化平台

可能是世界上最快、最先进的密码破解程序!


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存